package com.miniserver.tql;

import java.util.List;

import com.miniserver.tql.database.Configuration;
import com.miniserver.tql.database.ConnectionPool;

/**
 * 
 * TQL内存数据池的主控单元
 * 
 */
public interface TqlMaster {

	/**
	 * 读取配置文件, 从物理数据加载数据到TQL等
	 */
	void init(Configuration config) throws Exception;

	/**
	 * 获取空闲的读实例
	 * 
	 * @return
	 */
	TqlPool getMemdbPool(String dbName);

	/**
	 * 获取所有HSQL实例
	 * 
	 * @return
	 */
	List<TqlPool> getMemdbPools(String dbName);

	/**
	 * 获取物理数据的链接池
	 * 
	 * @param dbName
	 * @return
	 */
	ConnectionPool getPhysicalPool(String dbName);

	/**
	 * 销毁所有的内存数据库实例
	 * 
	 * @throws Exception
	 */
	void destroy() throws Exception;

	/**
	 * 进行内存数据池之间的数据同步
	 */
	boolean dataSync();
}